/* 注意事项：
    1.强制类型转换一般不推荐使用，因为有可能发生精度损失、数据溢出
    2. byte/short/char 这三种类型都可以发生数学运算，例如:加法 "+"
    2 byte/short/char 这三种类型在运算的时候， 都会被首先提升为int类型 然后再计算
    4. boolean 类型不能发生数据转换

*/
public class Demo1DataType {
    public static void main(String[] args) {
        // 强制类型转换 
        // 格式： 范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据;
        int num1 = (int) 100L;
        System.out.println(num1);

        // long 类型强制转换为 int  long类型的数据，大于int类型的范围，就会出现内存溢出的情况
        int num2 = (int) 6000000000L;
        System.out.println(num2);  // 1705032704

        // 精度损失 案例： double  --> int  强制类型转换
        int num3 = (int) 3.99;
        System.out.println(num3); // 3  这并不是四舍五入  而是所有的小数位都会被舍弃掉

        char zifu1 = 'A';
        System.out.println(zifu1 + 1); // 66 也就是 A 被当做65进行处理了
        // 一旦char类型进行了数学运算，那么字符就会按照ASCLII码转换为一个数字

        byte num4 = 40;
        byte num5 = 50;
        short num6 = 60;
        int result1 = num4 + num5; // 90  不能用 byte 接收 因为 byte类型进行了运算 所以 num4 = int类型 num5 = int类型

        // int 强转 short 注意必须保证逻辑上真实大小本来就没有超过时候short范围
        short result2 = (short) (num4 + num6);
    
    }
}